package com.blog.wl2023.entity.response;

import com.blog.wl2023.constant.Code;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
 * @author wule
 * @data 2023年08月15日18时
 * @description 统一前后端接口
 */
@AllArgsConstructor
@NoArgsConstructor
@Data
public class Result implements Serializable {

	/**
	 * 业务响应码
	 */
	private Integer code;
	/**
	 * 响应信息
	 */
	private String message;
	/**
	 * 响应数据
	 */
	private Object data;

	/**
	 * 返回成功，不带数据
	 */
	public static Result ok() {
		Result resp = new Result();
		resp.setCode(Code.SUCCESS.getCode());
		return resp;
	}

	/**
	 * 返回成功，带数据
	 *
	 * @param data
	 */
	public static Result ok(Object data) {
		Result resp = new Result();
		resp.setCode(Code.SUCCESS.getCode());
		resp.setData(data);
		return resp;
	}

	/**
	 * 返回失败
	 *
	 * @param code    错误码
	 * @param message 错误信息
	 */
	public static Result fail(Integer code, String message) {
		Result resp = new Result();
		resp.setCode(code);
		resp.setMessage(message);
		return resp;
	}
	/**
	 * 内部故障
	 *
	 * @param message 错误信息
	 */
	public static Result internalFail(String message) {
		Result resp = new Result();

		resp.setCode(Code.INTERNAL_FAIL.getCode());
		resp.setMessage(message);

		return resp;
	}

	/**
	 * 操作失败
	 *
	 * @param message 错误信息
	 */
	public static Result operateFail(String message) {
		Result resp = new Result();

		resp.setCode(Code.OPERATE_FAIL.getCode());
		resp.setMessage(message);

		return resp;
	}
}

